﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Domain.Model.Infracciones;
using Domain.Model.Articulos;
using Domain.Model.Comparendos;
using Domain.Model.Vehiculos;
using Domain.Model.SecretariasDeTransito;
using Domain.Model.Agentes;
using Domain.Model.Infractores;
using Domain.Model.Direcciones;

namespace Domain.Model.Aggregates
{
    public abstract class ComparendoAggregate
    {

        public static Comparendo CreateComparendo(
            ComparendoId comparendoId,
            string numero,
            DateTime fecha,
            String tipoInfractor,
            String estado,
            String observacion,
            SecretariaDeTransitoId secretariaTransitoId,
            VehiculoId vehiculoId,
            InfraccionId infraccionId,
            AgenteId agenteId,
            InfractorId infractorId,
            Direccion direccion
          )
        {
            return new Comparendo(comparendoId, numero, fecha, tipoInfractor, estado, observacion,
                secretariaTransitoId, vehiculoId, infraccionId, agenteId, infractorId, direccion);
        }

        public static Infraccion CreateInfraccion(
            InfraccionId infraccionId,
            String codigo,
            String descripcion,
            int cantSMLVM,
            int esVigente,
            Articulo articulo
          )
        {
            return new Infraccion(infraccionId, codigo, descripcion, cantSMLVM, esVigente, articulo);
        }

        public static Articulo CreateArticulo(
            String nroArticulo,
            String ley,
            String descripcion
           )
        {
            return new Articulo(nroArticulo, ley, descripcion);
        }

        public static Direccion CreateDireccion(
            String domicilio,
            String municipio,
            String localidad,
            String codigoPostal
           )
        {
            return new Direccion(domicilio, municipio, localidad, codigoPostal);
        }
    }
}
